package com.a1anwang.okble.demo.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * Created by a1anwang.com on 2018/5/22.
 */
public class MyLinkedHashMap<K, V> {
    private List<V> list;
    private HashMap<K, Integer> hashMap;

    /**
     * 构造函数
     */
    public MyLinkedHashMap() {
        super();
        list = new ArrayList<>();
        hashMap = new HashMap<>();
    }

    /**
     * put函数
     *
     * @param key   键
     * @param value 值
     * @return int[] 2个长度的数组,第一个数字代表 value对应的index, 第二个数字为1代表这是新增数据(key是新的),第二个数字为0代表不是新数据(key是旧的)
     */
    public int[] put(K key, V value) {
        int index = 0;
        if (!hashMap.containsKey(key)) {
            list.add(value);
            index = list.size() - 1;
            hashMap.put(key, Integer.valueOf(index));
            return new int[]{index, 1};
        } else {
            int oldIndex = hashMap.get(key);
            list.set(oldIndex, value);
            index = oldIndex;
            return new int[]{index, 0};
        }

    }

    /**
     * get函数
     *
     * @param index 下标
     * @return V
     */
    public V get(int index) {
        return list.get(index);
    }

    public List getList() {
        return list;
    }

    /**
     * 获取list的长度
     *
     * @return int
     */
    public int size() {
        return list.size();
    }

    /**
     * 清空数据
     */
    public void clear() {
        list.clear();
        hashMap.clear();
    }
}
